package com.wanwanbookstore.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * 应用程序配置工具类
 * 用于加载和访问app.properties中的配置项
 */
public class AppConfig {
    private static final Logger logger = LogManager.getLogger(AppConfig.class);
    private static final Properties properties = new Properties();
    
    static {
        try (InputStream input = AppConfig.class.getClassLoader().getResourceAsStream("app.properties")) {
            if (input != null) {
                properties.load(input);
                logger.info("应用配置加载成功");
            } else {
                logger.warn("未找到app.properties配置文件");
            }
        } catch (IOException e) {
            logger.error("加载应用配置失败", e);
        }
    }
    
    /**
     * 获取字符串类型的配置项
     * @param key 配置项键名
     * @param defaultValue 默认值
     * @return 配置值或默认值
     */
    public static String getProperty(String key, String defaultValue) {
        return properties.getProperty(key, defaultValue);
    }
    
    /**
     * 获取整数类型的配置项
     * @param key 配置项键名
     * @param defaultValue 默认值
     * @return 配置值或默认值
     */
    public static int getIntProperty(String key, int defaultValue) {
        String value = properties.getProperty(key);
        if (value != null) {
            try {
                return Integer.parseInt(value);
            } catch (NumberFormatException e) {
                logger.warn("配置项 {} 的值 {} 不是有效的整数，使用默认值 {}", key, value, defaultValue);
            }
        }
        return defaultValue;
    }
    
    /**
     * 获取应用名称
     */
    public static String getAppName() {
        return getProperty("app.name", "万万书城");
    }
    
    /**
     * 获取应用版本
     */
    public static String getAppVersion() {
        return getProperty("app.version", "1.0.0");
    }
    
    /**
     * 获取页面大小配置
     */
    public static int getPageSize() {
        return getIntProperty("page.size", 10);
    }
}